iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
Software Development

用30天介紹 open source 專案 Ohara 系列 第 16

Day 16 如何 Build Ohara 的程式碼

  • 分享至 

  • xImage
  •  

Ohara 是一個 open source,如果對這個專案有興趣的人可以把程式碼拉回本機,然後進行程式碼的研究、修改,甚至覺得修改的程式碼對大家都有幫助還可以貢獻回 Ohara。

今天主要會介紹以下幾個部份:

  • 如何的把 Ohara 程式碼拉回到本機,執行 build 程式碼的動作。之後 import 到 Intellij IDE
  • 如何使用 gradle 的指令,執行單元測試程式
  • 如何使用 gradle 的指令,進行 code style 和 License Header 的檢查

在 Build Ohara 的程式碼之前,需要準備以下的工具:

  • 作業系統建議使用 CentOS 7 或是 Ubuntu 18 以上
  • Gradle 使用 5 以上
  • 需要安裝 git
  • 準備 Intellij IDE

一. 如何的把 Ohara 程式碼拉回到本機,執行 build 程式碼的動作。之後 import 到 IntelliJ IDE,說明如下:
1.如果沒有 git 可以使用以下的指令安裝 (這裡以 CentOS 為例):

# yum install -y git 

2.拉取 Ohara 原始碼的指令如下:

$ git clone https://github.com/oharastream/ohara.git 

3.使用以下的指令來執行 Build Ohara 的程式碼:

$ gradle clean build -x test -PskipManager 

把程式碼拉回本機之後,會使用以上的指令先測試 build 一次 Ohara 的程式碼,看是否會有問題

4.把程式碼匯入到 Intellij 的 IDE
開啟 Intellij IDE 之後 -> Import Project -> 選擇 ohara 程式碼的資料夾下面的 build.grdle 檔案 -> 選擇 OK 之後就可以把 Ohara 的程式碼匯入到 Intellij 的 IDE 裡。

畫面如下
https://ithelp.ithome.com.tw/upload/images/20191001/201034563EwO1DQXxK.png

二. 如何使用 gradle 的指令,執行單元測試程式
執行一個 class 的單元測試的指令如下:
gradle clean ${OHARA_MODULE_NAME}:test --tests ${TEST_CLASS_NAME} -PskipManager

舉一個測試 ohara-agent 模組的 TestWorkerCreator class 例子,指令如下:

$ gradle clean ohara-agent:test --tests TestWorkerCreator -PskipManager

如果要執行 ohara-agent 模組,所有的單元測試可以使用以下的指令:

$ gradle clean ohara-agent:test --tests Test* -PskipManager 

-PskipManager 參數主要是跳過執行前端的測試
Ohara 的 module name 可以直接看 ohara 資料夾下的子資料名稱,目前主要的模組如下:

ohara-agent、ohara-assembly、ohara-client、ohara-common、ohara-configurator、ohara-connector、ohara-it、ohara-kafka、ohara-manager、ohara-metrics、ohara-shabondi、ohara-streams、ohara-testing-util

有關於每個 module 的用途,明天還會詳細做介紹

三. 如何使用 gradle 的指令,進行 code style 和 License Header 的檢查
Ohara 因為是 Open Source 所以有可能每個寫程式碼的人習慣不太一樣,在閱讀程式碼時就要去適應不同的寫法,這樣會非常的辛苦。Ohara 要求每個人的程式碼盡量要寫的一致,這樣不同的人維護也比較好閱讀,因此 Ohara 有做 Code Style 的檢查,指令如下:

$ gradle spotlessCheck 

如果不符合 Code Style 會出現以下的錯誤訊息:

Execution failed for task ':ohara-it:spotlessScala'. 
> The following files had format violations: 
      ohara-it/src/test/scala/com/island/ohara/it/connector/BasicTestConnectorCollie.scala 
          @@ -301,15 +301,14 @@ 
            
           ··private[this]·def·testConnectors(cluster:·WorkerClusterInfo):·Unit·= 
           ····await(()·=> 
          -········try·{ 
          -··········log.info(s"worker·node·head:·${cluster.nodeNames.head}:${cluster.clientPort}")  -··········result(WorkerClient(s"${cluster.nodeNames.head}:${cluster.clientPort}").connectorDefinitions()).nonEmpty =

在這裡可以使用手動的方式修改,然後在執行以上的指令進行 Code Style 的檢查,另外也可以使用以下的指令,進行 Code Style 自動的修改:

$ gradle spotlessApply 

Ohara 程式碼的每個檔案的標頭都會進行 License 的宣告,可以使用以下的指令進行檢查程式碼的檔案標頭是否有漏掉:

$ gradle licenseTest 

如果有漏掉會收到以下的錯誤訊息:

* What went wrong: 
Execution failed for task ':licenseTest'. 
> License violations were found: /home/user1/ohara/ohara-it/src/test/scala/com/island/ohara/it/connector/BasicTestConnectorCollie.scala}

在這裡可以使用手動的方式把 Licese 標頭加到漏掉的檔案。也可以使用以下的指令自動加入 License 的標頭:

$ gradle licenseApply 

今天已經介紹了要如何的把 Ohara 的程式碼從 git 取到本機,並且匯入的 Intellij IDE 了以及跑測試程式的指令,如果對 Ohara 有興趣可以把程式碼拉下來玩看看,連結如下:
https://github.com/oharastream/ohara


上一篇
Day 15 Ohara 的 Cluster 在 Kubernetes 的平台執行 (四)
下一篇
Day 17 介紹 Ohara 的模組
系列文
用30天介紹 open source 專案 Ohara 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言